List এবং Array এর অপারেশন (map, filter, fold)
List এবং Array হল F# প্রোগ্রামিং ভাষায় সাধারণভাবে ব্যবহৃত ডেটা স্ট্রাকচার। এই দুটি ডেটা স্ট্রাকচারে বিভিন্ন অপারেশন যেমন map, filter, এবং fold ব্যবহার করে ডেটার সাথে কার্যকরীভাবে কাজ করা যায়। এগুলি ফাংশনাল প্রোগ্রামিংয়ের মৌলিক ধারণা যা লিস্ট বা অ্যারের উপাদানগুলির সাথে বিভিন্ন ট্রান্সফরমেশন এবং অ্যাক্সেস অপারেশন সম্পাদন করতে সাহায্য করে।
১. map (ম্যাপ)
map অপারেশনটি একটি ফাংশন প্রতিটি উপাদানের উপর প্রয়োগ করে এবং একটি নতুন লিস্ট বা অ্যারে রিটার্ন করে। এটি মূলত ডেটা ট্রান্সফরমেশনের জন্য ব্যবহৃত হয়, যেখানে প্রতিটি উপাদানকে কিছু পরিবর্তন করা হয়।
List এ map এর ব্যবহার:
let numbers = [1; 2; 3; 4; 5]
let squaredNumbers = List.map (fun x -> x * x) numbers
printfn "%A" squaredNumbers // আউটপুট: [1; 4; 9; 16; 25]ব্যাখ্যা:
List.map (fun x -> x * x)এই ফাংশনটি প্রতিটি উপাদানের উপরx * xফাংশন প্রয়োগ করে এবং একটি নতুন লিস্ট রিটার্ন করে।
Array এ map এর ব্যবহার:
let numbers = [|1; 2; 3; 4; 5|]
let squaredNumbers = Array.map (fun x -> x * x) numbers
printfn "%A" squaredNumbers // আউটপুট: [|1; 4; 9; 16; 25|]ব্যাখ্যা:
Array.mapব্যবহার করে অ্যারের প্রতিটি উপাদানে ফাংশন প্রয়োগ করা হচ্ছে এবং একটি নতুন অ্যারে তৈরি করা হচ্ছে।
২. filter (ফিল্টার)
filter অপারেশনটি একটি শর্তের ভিত্তিতে উপাদানগুলোকে ফিল্টার করে, অর্থাৎ শর্ত পূরণকারী উপাদানগুলো রেখে বাকি উপাদানগুলো বাদ দেয়। এটি শুধুমাত্র সেসব উপাদানগুলো রিটার্ন করে যা শর্ত পূর্ণ করে।
List এ filter এর ব্যবহার:
let numbers = [1; 2; 3; 4; 5]
let evenNumbers = List.filter (fun x -> x % 2 = 0) numbers
printfn "%A" evenNumbers // আউটপুট: [2; 4]ব্যাখ্যা:
List.filter (fun x -> x % 2 = 0)এই ফাংশনটি শুধুমাত্র সেসব উপাদান নির্বাচন করবে যা even (যেগুলোর ভাগফল ০)।
Array এ filter এর ব্যবহার:
let numbers = [|1; 2; 3; 4; 5|]
let evenNumbers = Array.filter (fun x -> x % 2 = 0) numbers
printfn "%A" evenNumbers // আউটপুট: [|2; 4|]ব্যাখ্যা:
Array.filterব্যবহার করে অ্যারের মধ্যে সেসব উপাদান নির্বাচন করা হয়েছে যা শর্ত পূর্ণ করেছে।
৩. fold (ফোল্ড)
fold অপারেশনটি একটি একক মান তৈরি করতে লিস্ট বা অ্যারের উপাদানগুলিকে একত্রিত করে। এটি একটি এক্সপ্লিকিট ফাংশন এবং একে একে প্রতিটি উপাদানের উপর কোনো অ্যাকশান প্রয়োগ করে এবং একটি অ্যাকিউমুলেটর বা স্টেট মানে এটি আপডেট হয়।
List.foldবাArray.foldপ্রথম আর্গুমেন্ট হিসেবে একটি স্টেট (এ্যাকিউমুলেটর), দ্বিতীয় আর্গুমেন্ট হিসেবে একটি ফাংশন এবং তৃতীয় আর্গুমেন্ট হিসেবে একটি লিস্ট বা অ্যারে নেয়।- এটি প্রতিটি উপাদানকে একের পর এক অ্যাকিউমুলেটরের সাথে যুক্ত করে এবং ফলস্বরূপ একটি একক মান রিটার্ন করে।
List এ fold এর ব্যবহার:
let numbers = [1; 2; 3; 4; 5]
let sum = List.fold (fun acc x -> acc + x) 0 numbers
printfn "Sum: %d" sum // আউটপুট: Sum: 15ব্যাখ্যা:
List.fold (fun acc x -> acc + x) 0এই ফাংশনটি একটি এক্সপ্লিকিট অ্যাকিউমুলেটর0থেকে শুরু করে প্রতিটি উপাদানxএর সাথে যোগফল করে, এবং একটি একক ফলাফল15রিটার্ন করে।
Array এ fold এর ব্যবহার:
let numbers = [|1; 2; 3; 4; 5|]
let sum = Array.fold (fun acc x -> acc + x) 0 numbers
printfn "Sum: %d" sum // আউটপুট: Sum: 15ব্যাখ্যা:
Array.fold (fun acc x -> acc + x) 0ব্যবহার করে অ্যারের উপাদানগুলোর যোগফল বের করা হয়েছে, যেখানেaccহচ্ছে অ্যাকিউমুলেটর এবংxহচ্ছে প্রতিটি উপাদান।
সংক্ষিপ্ত তুলনা
| অপারেশন | বর্ণনা | ব্যবহার |
|---|---|---|
| map | একটি ফাংশন প্রতিটি উপাদানে প্রয়োগ করে একটি নতুন লিস্ট বা অ্যারে তৈরি করে। | উপাদানগুলোর মান পরিবর্তন করা। |
| filter | একটি শর্তের ভিত্তিতে উপাদানগুলো ফিল্টার করে, শর্ত পূর্ণ করা উপাদানগুলো রেখে দেয়। | নির্দিষ্ট শর্ত পূর্ণ করা উপাদানগুলির নির্বাচন। |
| fold | একক মানে উপাদানগুলিকে একত্রিত করে। | উপাদানগুলোর উপর অ্যাকিউমুলেটর প্রয়োগ করে একক ফলাফল তৈরি করা। |
উপসংহার
map, filter, এবং fold হল ফাংশনাল প্রোগ্রামিংয়ের অত্যন্ত শক্তিশালী এবং সাধারণ অপারেশন যা F# এর মত ভাষায় ব্যবহৃত হয়। এগুলি লিস্ট বা অ্যারে অপারেশন করতে খুবই কার্যকরী। map ডেটা ট্রান্সফর্মেশন, filter ডেটা সিলেকশন এবং fold ডেটা একত্রিত করার জন্য ব্যবহৃত হয়। এগুলির মাধ্যমে আপনি ফাংশনাল প্রোগ্রামিংয়ের মূল ধারণাগুলির সাহায্যে সহজে এবং কার্যকরভাবে ডেটা পরিচালনা করতে পারেন।
Read more